/**
 * 
 */
package com.rangers.auth.base.details;

import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;

import org.springframework.util.StringUtils;

/**
 * 角色基础信息
 * 
 * @version 1.0
 * @author fuhw
 * @date 2017年8月18日 上午10:19:45
 */
@SuppressWarnings("rawtypes")
public interface BriefRole<M extends BriefMenu,S extends BriefScope, ID> {
	
	public ID getId();

	public String getName();// 角色名

	public Set<M> getMenus();// 菜单

	public Set<S> getScopes();// 所属范围

	/**
	 * 所属范围全称:逗号分隔字符串
	 */
	public default String getFullScopesName() {
		Set<? extends BriefScope> scopes = this.getScopes();
		if (scopes != null && !scopes.isEmpty()) {
			List<String> strs = scopes.stream().map(scope -> scope.getName()).collect(Collectors.toList());
			return StringUtils.collectionToCommaDelimitedString(strs);
		}
		return null;
	}

}
